﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace GestorDeFlotasDesktop.RendirViajes
{
    public partial class RendierViajes : MasterPage
    {
        public capaDatos.SQLSyntaxisGeneration rendicionesCD = new capaDatos.SQLSyntaxisGeneration();
        DataTable choferes,turnos,rendiciones;
        ArrayList array = new ArrayList();
        Form ventanPadre;
        public RendierViajes(Form ventanaParam)
        {
            InitializeComponent();
            monthCalendar1.Visible = false;
            ocultarMenu(ref ventanPadre, ventanaParam);
            dataGridView1.Visible = false;
            button3.Visible = false;
            lblRodado.Visible = false;
            textBox2.Visible = false;
            button4.Visible = false;
        }

        private void RendierViajes_Load(object sender, EventArgs e)
        {
            cargarChoferes();
            comboBox1.Text = "";
        }

        private void RendierViajes_FormClosing(object sender, FormClosingEventArgs e)
        {
            ventanPadre.Visible = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(!monthCalendar1.Visible)
                monthCalendar1.Visible = true;
            else
                monthCalendar1.Visible = false;
        }
        
        

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
           textBox4.Text= e.Start.ToShortDateString();
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox4.Text = "";
            comboBox1.Text = "";
            comboBox6.Text = "";
           

        }
        private void cargarChoferes()
        {
            string query = "select distinct cast(c.idChofer as varchar) + ' - ' + c.nombreChofer + ', '+ c.apellidoChofer + ' - ' + cast(c.dniChofer as varchar), c.idChofer";
            query += " from PELUSA.chofer c,PELUSA.choferes_taxis ct,Pelusa.taxis t,Pelusa.reloj r where activoChofer=1 and c.idChofer=ct.idChofer and ";
            query += "ct.idTaxi= t.idTaxi and t.relojTaxi = r.idReloj and r.activoReloj=1 and t.activoTaxi=1 order by idChofer";
            //un chofer es cargado en el combo sólo si él está habilitado, su taxi esta habilitado y el reloj de su taxi está habilitado

            choferes = rendicionesCD.executeQuery(query);
            comboBox1.MaximumSize = GetPreferredSize(new Size(274, choferes.Rows.Count));
            comboBox1.DataSource = choferes;
            comboBox1.DisplayMember = choferes.Columns[0].ColumnName;
            comboBox1.Text = "";

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string chofer;
            if (choferes.Rows.Count != 0)
                chofer = Convert.ToString(choferes.Rows[comboBox1.SelectedIndex].ItemArray[1]);
            else
                chofer = "";
            if (chofer != "System.Data.DataRowView" && chofer != "")
                cargarTurnos(Convert.ToString(chofer));
        }

        private void cargarTurnos(string IDchofer)
        {

            string query = "select distinct t.descripcionTurno,t.idTurno,t.horaInicioTurno,t.horaFinTurno from PELUSA.turno t,PELUSA.choferes_taxis ct where";
            query += " t.idTurno=ct.idTurno and activoturno=1 and ct.idChofer=" + IDchofer;
            //sólo muestro los turnos correspondientes al chofer y que estén activos/habilitados
            turnos = rendicionesCD.executeQuery(query);

            comboBox6.DataSource = turnos;
            comboBox6.DisplayMember = turnos.Columns[0].ColumnName;
            comboBox6.Text = "";

        }

        private void btAlta_Click(object sender, EventArgs e)
        {

            if (comboBox1.Text == "" || (comboBox6.Text == "") || textBox4.Text == "")
            {
                MessageBox.Show("Todos los campos son obligatorios. Por favor, complete los campos faltantes.", "Rendición de viajes", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                {
                    textBox4.Text = "";
                    comboBox1.Text = "";
                    comboBox6.Text = "";
                   
                    monthCalendar1.Visible = false;
                    dataGridView1.Visible = false;
                    button3.Visible = false;
                    lblRodado.Visible = false;
                    textBox2.Visible = false;
                    button4.Visible = false;
                
                }

            }
            else
            {
                int idchofer = Convert.ToInt32(choferes.Rows[comboBox1.SelectedIndex].ItemArray[1]);
                int idturno = Convert.ToInt32(choferes.Rows[comboBox6.SelectedIndex].ItemArray[1]);

                string anio = Convert.ToString(monthCalendar1.SelectionStart.Year);
                string mes = Convert.ToString(monthCalendar1.SelectionStart.Month);
                string dia = Convert.ToString(monthCalendar1.SelectionStart.Day);


                rendiciones = rendicionesCD.executeSp("pelusa.viajesArendir", parametrosStoredProcedure( paramsNames("anio", "mes", "dia", "chofer", "turno"), paramsValues(anio, mes, dia, idchofer, idturno)));

                if (rendiciones.Columns.Count == 1) //es el mensaje de error del sp
                    MessageBox.Show(Convert.ToString(rendiciones.Rows[0].ItemArray[0]) + ", o no existen viajes a rendir para la fecha/turno solicitado", "Rendición de viajes", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    

                    dataGridView1.DataSource = rendiciones;
                    dataGridView1.Visible = true;
                    dataGridView1.AutoResizeColumnHeadersHeight();
                    button3.Visible = true;
                    lblRodado.Visible = true;
                    textBox2.Visible = true;
                    button4.Visible = true;
                    int i;
                    Double cant = 0;
                    for (i = 0; i < rendiciones.Rows.Count; i++)
                        cant += Convert.ToDouble(rendiciones.Rows[i].ItemArray[3]);
                    textBox2.Text = Convert.ToString(cant);//indico en el textbox el monto total a rendir
                    textBox2.Visible = true;
                    lblRodado.Visible = true;
                    button3.Visible = true;
                    button4.Visible = true;
                }
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
                
                
                textBox4.Text = "";
                comboBox1.Text = "";
                comboBox6.Text = "";
                
                monthCalendar1.Visible = false;
                dataGridView1.Visible = false;
                button3.Visible = false;
                lblRodado.Visible = false;
                textBox2.Visible = false;
                button4.Visible = false;

        }

        private void button3_Click(object sender, EventArgs e)
        {
            string mes, dia;
           int idchofer = Convert.ToInt32(choferes.Rows[comboBox1.SelectedIndex].ItemArray[1]);
           int idturno = Convert.ToInt32(choferes.Rows[comboBox6.SelectedIndex].ItemArray[1]);
           string anio = monthCalendar1.SelectionStart.Year.ToString();
           if (Convert.ToInt32(monthCalendar1.SelectionStart.Month) < 10)
               mes = "0" + monthCalendar1.SelectionStart.Month.ToString();
           else
               mes = monthCalendar1.SelectionStart.Month.ToString();
           if (Convert.ToInt32(monthCalendar1.SelectionStart.Day) < 10)
               dia = "0" + monthCalendar1.SelectionStart.Day.ToString();
           else
               dia = monthCalendar1.SelectionStart.Day.ToString();
           string fecha = anio+ mes+ dia+" 00:00:00.000";
           ArrayList param=  parametrosStoredProcedure( paramsNames("fecha", "monto", "chofer", "turno"), paramsValues(fecha, Convert.ToDouble(textBox2.Text), idchofer, idturno));
         rendiciones = rendicionesCD.executeSp("pelusa.rendirViajes",param);

         if (Convert.ToString(rendiciones.Rows[0].ItemArray[0]) != "ok")
         {
             MessageBox.Show(Convert.ToString(rendiciones.Rows[0].ItemArray[0]), "Rendición de viajes", MessageBoxButtons.OK, MessageBoxIcon.Error);
             button3.Visible = false;
             lblRodado.Visible = false;
             textBox2.Visible = false;
             button4.Visible = false;
         }
         else
         {
             MessageBox.Show("La operación ha sido realizada con éxito", "Rendición de viajes", MessageBoxButtons.OK, MessageBoxIcon.Information);

             monthCalendar1.Visible = false;
             dataGridView1.Visible = false;
             button3.Visible = false;
             lblRodado.Visible = false;
             textBox2.Visible = false;
             button4.Visible = false;



         }
        }
    }
}
